(計実) 第5回課題
<「成績シミュレータ」を作る>
今回の課題は,いままで学んだPythonの知識を使って,成績シミュレータを作ることである.
【問題】 以下の作業をするプログラムを作成しなさい.
タイトル: [成績シミュレータ]
入力:
学籍番号
欠席数
レポート未提出数
実技テスト点
出力:
総点:入力値を計算
合否:「合格」「不合格」
★プログラムはパーツに分けて考える.
※プログラム全体が未完成でも,パーツ毎に段階的に評価する.
※デバッグ作業もやりやすい.
以下に仕様を示す.
◆仕様:
[題名]成績シミュレータ
[プログラムファイル名]mark-sim.py
[入力]学籍番号,欠席数,レポート未提出数,実技テスト点
学籍番号:半角英数字 (7桁の文字列)
欠席数:半角数字 (0以上8以下の正整数)
レポート未提出数:同上
実技テスト点: (0以上60以下の整数)
[処理]基礎点と素点から総点を算出,合否を判定
基礎点=40 ← 最初に与える
素点 = $ 基礎点 - 欠席数 \times 10 - レポート未提出数 \times 6
※この時点で,素点 < 0 なら,素点=0点にする ◀◀重要!
総点 = 素点 + 実技テスト点
合否判定:総点 < 60で不合格.60点以上は合格.
[出力] 総点と合否を出力
以下の書式を目標とする:
code:出力書式
==============
番号:Y990xxxx
合否:合格 (または"不合格")
総点:xx
==============
※表記や"==="などの飾り罫線等,アレンジしても構わない.
たとえば,素点と実技テスト点を追加するなど.
ただし,学籍番号,合否,総点の値は必ず出力すること.
◆実行例:(不合格の例)
以下に実行例を示す.
code:実行例-不合格の場合
$ python3 mark-sim.py▼
学籍番号は? Y990123▼ ◀◀ 半角英数字入力
欠席回数は? 2▼ ◀◀ 半角数字入力
未提出回数は? 4▼ ◀◀ 半角数字入力
実技テストの点数は? 50▼ ◀◀ 半角数字入力
==============
番号:Y990123
合否:不合格
総点:50
==============
$
◆パーツ
この程度のプログラムでも,一度にサクサク作成することは困難である.
なので,全体をいくつかのパーツに分け,それぞれをしっかり正しく動作するように作成し,最後に合体させる.
各パーツは以下のように設計する.
■Aパーツ:点数計算・評価:"mark-sim-A.py"
入力は変数に直接代入する
素点計算する
素点が負だった時の処理
総点計算する → 変数に代入
合否判定する → 変数に代入
■Bパーツ:入力受付:"mark-sim-B.py"
4つの値を入力受付する
数値は整数型に変換する
各変数に代入する
★オプション:例外処理 ◀◀できたら加点評価
入力が範囲外だと → 「違う」と表示して終了する
a. 欠席とレポート未提出の範囲外:マイナス,9以上,文字列
b. 実技テスト点の範囲外:マイナス,61以上,文字列
■Cパーツ:出力:"mark-sim-C.py"
3つのデータを項目名付きで出力
飾り罫等による整形
■D全体:組み立て:"mark-sim.py"
A, B, Cを合わせて1つのプログラムを完成させる.
部分的に欠けていたりエラーが出る場合でも,組み立てられたら提出する.
※未完成の場合,どういう状況なのかを具体的に記述しておくこと.
うまく行かない場合もうまくいった場合も,入力状態と出力結果を必ず確認し,提出する.
レポートにはまず「A~Dのどこまでできたか」を書くこと.
短くてよいので,プログラムを作成した時の所感を,できるだけ具体的に述べなさい.
【提出方法】
( 1 ) ファイルのReportへのコピー
すべての作業はWorkディレクトリで行うこと.
作業したファィルの中から,レポート提出ファイルだけを レポートディレクトリ (Report) に保存する.
上記課題では,A, B, Cの3つのパート (mark-sim-A.py~-C.py) とD完成形 (mark-sim.py) を提示した.
この中で,提出できる (評価に耐えうる) と自分で判断したプログラムファイルを,すべてReportにコピーしなさい.
たとえば,最後まで完成させたのであれば,mark-sim.pyだけでよい.
未完成だがA,B,C個別にはできたのなら,mark-sim-A.py , mark-sim-B.py , mark-sim-C.pyを提出する.
A,Cだけつなぎあわせたのなら,それをmark-sim.pyとして提出する.
未完成の場合,どこが未完成かをプログラムのコメントとして説明すること.
★どのファイルを出すかの判断は各人に任せる.
ただし「どうせだめだ」「なんかわからんが出してしまえ」でなく, 判断の理由を持つこと.
( 2 ) manabaへのレポート提出
( 1 ) 本文冒頭に学籍番号と氏名を明記する.
( 2 ) A~Dのどれとどれを提出するのか (またはどういう組み合わせか) を最初に明示する.
( 3 ) プログラムファイル名を明示してから,それぞれの中身を貼り付ける.
プログラムのタイトル (ファイル名) を明記すること
プログラムソースの開始と終わりを明確にすること (-----で区切るなど)
( 4 ) そのプログラムの実行結果を貼り付ける (プログラムと結果をペアに) .
実行結果の開始と終わりを明確にすること (-----で区切るなど)
プログラムとその結果はペアで提示する
( 5 ) プログラム作成における所感を付ける.
短くても構わないが「がんばった」「よかった」「ありがとうございました」等は,ないほうがマシ
※いつもの注意:manabaでのトラブル回避のため,まずはレポート文を自PCのエディタで作成してから提出すること.
提出場所 (1): レポートディレクトリ ( Report )
ファイル名:mark-sim-A.py ~ -C.py , mark-sim.py のいずれかまたは全部
提出場所 (2): manaba「計算機実習1 U43Y314」
→ レポート「計算機実習1第5回レポート」
提出期限:次回の授業開始 (13:30)
※時間は厳守.manaba の設定により自動的に受付は終了する.
以上.
2023/7/13 by Kobori Satoshi, Fujii Daisuke